bitkeeper revision 1.7.1.4 (3def5f48kwmL0X0eiElxGFHZW7Qdhg)
authorsmh22@boulderdash.cl.cam.ac.uk <smh22@boulderdash.cl.cam.ac.uk>
Thu, 5 Dec 2002 14:14:32 +0000 (14:14 +0000)
committersmh22@boulderdash.cl.cam.ac.uk <smh22@boulderdash.cl.cam.ac.uk>
Thu, 5 Dec 2002 14:14:32 +0000 (14:14 +0000)
shrink ring1/3 segments to 3.5GB + associated changes + a few tweaks.

xen-2.4.16/arch/i386/boot/boot.S
xen-2.4.16/common/block.c
xen-2.4.16/common/domain.c
xen-2.4.16/common/memory.c

index 1b7323ee7e998b7c7ac4221acd63dee89b1632cc..69aa1e8f6d09b806334549272640608b24187535 100644 (file)
@@ -219,10 +219,10 @@ nopaging_gdt_descr:
 ENTRY(gdt_table)
         .quad 0x0000000000000000     /* NULL descriptor */
         .quad 0x0000000000000000     /* not used */
-        .quad 0x00ceba000000ffff     /* 0x11 ring 1 3.5GB code at 0x00000000 */
-        .quad 0x00ceb2000000ffff     /* 0x19 ring 1 3.5GB data at 0x00000000 */
-        .quad 0x00cefa000000ffff     /* 0x23 ring 3 3.5GB code at 0x00000000 */
-        .quad 0x00cef2000000ffff     /* 0x2b ring 3 3.5GB data at 0x00000000 */
+        .quad 0x00cdba000000ffff     /* 0x11 ring 1 3.5GB code at 0x00000000 */
+        .quad 0x00cdb2000000ffff     /* 0x19 ring 1 3.5GB data at 0x00000000 */
+        .quad 0x00cdfa000000ffff     /* 0x23 ring 3 3.5GB code at 0x00000000 */
+        .quad 0x00cdf2000000ffff     /* 0x2b ring 3 3.5GB data at 0x00000000 */
         .quad 0x00cf9a000000ffff     /* 0x30 ring 0 4.0GB code at 0x00000000 */
         .quad 0x00cf92000000ffff     /* 0x38 ring 0 4.0GB data at 0x00000000 */
         .quad 0x0000000000000000
index 6ccdb107ed5b6dbe3a0efc7cb65e250fbba462f0..851b3b544c82235532276770c1b04e628e017c46 100644 (file)
@@ -17,5 +17,6 @@
  */
 blk_ring_t *create_block_ring(int domain)
 {
-  printk ("XEN create block ring");
+    printk ("XEN create block ring <not implemented>");
+    return (blk_ring_t *)NULL; 
 }
index a1d5de21c9ad45b69b3b88e1e209a89c9dc14809..d2cce11c5ec4a6f3559168d097addfd8edf4ef7c 100644 (file)
@@ -402,7 +402,7 @@ int setup_guestos(struct task_struct *p, dom0_newdomain_t *params)
     unsigned long cur_address, end_address, alloc_address, vaddr;
     unsigned long virt_load_address, virt_stack_address, virt_shinfo_address;
     unsigned long virt_ftable_start_addr = 0, virt_ftable_end_addr;
-    unsigned long ft_mapping = frame_table;
+    unsigned long ft_mapping = (unsigned long)frame_table;
     unsigned int ft_size = 0;
     start_info_t  *virt_startinfo_address;
     unsigned long long time;
@@ -410,7 +410,6 @@ int setup_guestos(struct task_struct *p, dom0_newdomain_t *params)
     l1_pgentry_t *l1tab = NULL;
     struct pfn_info *page = NULL;
     net_ring_t *net_ring;
-    blk_ring_t *blk_ring;
 
     if ( strncmp(__va(mod[0].mod_start), "XenoGues", 8) )
     {
@@ -578,11 +577,18 @@ int setup_guestos(struct task_struct *p, dom0_newdomain_t *params)
         net_ring = create_net_vif(dom);
         if (!net_ring) panic("no network ring!\n");
     }
-    virt_startinfo_address->net_rings = p->net_ring_base;
+
+/* XXX SMH: horrible hack to convert hypervisor VAs in SHIP to guest VAs  */
+#define SHIP2GUEST(_x) (virt_shinfo_address | (((unsigned long)(_x)) & 0xFFF))
+
+    virt_startinfo_address->net_rings = 
+       (net_ring_t *)SHIP2GUEST(p->net_ring_base); 
     virt_startinfo_address->num_net_rings = p->num_net_vifs;
 
     /* Add block io interface */
-    virt_startinfo_address->blk_ring = p->blk_ring_base;
+    virt_startinfo_address->blk_ring = 
+       (blk_ring_t *)SHIP2GUEST(p->blk_ring_base); 
+
 
     /* We tell OS about any modules we were given. */
     if ( nr_mods > 1 )
index 7b2d25a07be1602309d5c41db70c6091b4a480a6..5227ecf05a991854c1257d2ab160f52e4d7cfe2d 100644 (file)
 #include <asm/io.h>
 #include <asm/uaccess.h>
 
-#if 1
+#if 0
 #define MEM_LOG(_f, _a...) printk("DOM%d: (file=memory.c, line=%d) " _f "\n", current->domain, __LINE__, ## _a )
 #else
 #define MEM_LOG(_f, _a...) ((void)0)